One or more embodiments relate generally to methods and apparatus for accessing and managing shared memory within computing devices. More specifically, for example, one or more embodiments relate to providing access to shared portions of one or more memories based on one or more group identifiers within a translation lookaside buffer.
Computing devices and operating systems managing computing devices can provide software modules, or processes, executing at the computing devices with shared portions of memory using a variety of techniques. Some computing devices use processors and/or translation lookaside buffers (“TLBs”) that can associate a list of process identifiers with a portion of memory (i.e., the shared memory). Any process with a process identifier that is included in the list of process identifiers can access (e.g., read and/or write to) the related portion of memory. Other computing devices use processors and/or TLBs that can be configured to ignore or disable a process identifier verification. When the process identifier verification is disabled, any process requesting access to the shared memory can access the shared memory regardless of the process identifier of that process.
Such methods and computing devices suffer several disadvantages. Because of limitations on memory within processors and TLBs, the number of process identifiers that can be stored in a list is generally small, for example, in comparison with the number of processes executing at a computing device. Additionally, a disabled process identifier verification creates a security vulnerability within the operating system and/or computing device allowing less restricted access to the shared memory. Thus, improved methods and apparatus for shared memory are desirable.